﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dominio;
using Log4Net;

namespace HotelGUI
{
    public partial class ConfiguracionDeParametros : Form
    {

        private ISistema sistema;
        private ILog log = FactoryLogs.getLogInstance();
        private List<string[]> paises;

        public ConfiguracionDeParametros()
        {
            InitializeComponent();
            sistema = Fabrica.getSistema();
            paises = sistema.obtenerPaises(true);
        }

        private void rbWebService_CheckedChanged(object sender, EventArgs e)
        {
            if (rbWebService.Checked)
            {
                // Mostrar las opciones de configuracion de WebService
                txtURLWebService.Enabled = true;
            }
            else
                txtURLWebService.Enabled = false;

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            string tipoFacturacion;
            int idPais;
            
            try
            {
                idPais = idPaisSeleccionado(cmbPais.SelectedItem.ToString());
                if (rbAPI.Checked)
                {
                    tipoFacturacion = "Api";
                }
                else
                    tipoFacturacion = "WebService";

                sistema.guardarConfiguracion(txtNombreHotel.Text, idPais, tipoFacturacion, txtURLWebService.Text);
                log.info(sistema.obtenerIdUsuarioLogueado(), "Configuracion Guardada.");
                MessageBox.Show("Configuración guardada con éxito.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void ConfiguracionDeParametros_Load(object sender, EventArgs e)
        {
            try
            {
                string[] conf = sistema.getConfiguracionSistema();
                // conf[0]: nombreHotel, conf[1]:idPais, conf[2]: tipoFacturacion, conf[3]: WsURL

                txtNombreHotel.Text = conf[0];
                int idpais = int.Parse(conf[1]);
                string nomPaisConf = "";
                foreach (string[] pais in paises)
                {
                    cmbPais.Items.Add(pais[1]);
                    if (int.Parse(pais[0]) == idpais)
                        nomPaisConf = pais[1];
                }
                
                cmbPais.SelectedIndex = cmbPais.Items.IndexOf(nomPaisConf);
                
                if (conf[2].Equals("Api"))
                {
                    rbAPI.Select();
                }
                else
                {
                    rbWebService.Select();
                    txtURLWebService.Text = conf[3];
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }


        private int idPaisSeleccionado(string nomPais)
        {
            int res = -1;
            foreach (string[] pais in paises)
            {
                if (pais[1] == nomPais)
                {
                    res = int.Parse(pais[0]);
                    break;
                }

            }
            return res;
        }



    }
}
